home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
(A)TA
/
(A)TAR.ADF
/
Cribbage
/
cribba.arc
/
init.bas
< prev
next >
Wrap
BASIC Source File
|
1986-12-06
|
25KB
|
715 lines
1 rem ** written by David Addison -- (503)-645-6985 -- c1985 -- this program has been put into the public domain -- use kickstart 1.0
2 clr:screen 0,5:graphic 1:drawmode 0
3 dim cribscreen%(10000),regsave%(100),clubs%(450),spades%(450),hearts%(450),diamonds%(450),clubs2%(450),spades2%(450),hearts2%(450),diamonds2%(450)
4 dim back1%(450),back2%(450),computer%(60),human%(60),computerb%(60),humanb%(60),mycrib%(350),yourcrib%(350)
5 dim points%(350),pointer%(60),pointerb%(60),updown%(300),updownb%(300),backerase%(220),carderase%(360)
6 dim gobox%(125),goboxb%(125),donebox%(150),doneboxb%(150),winner%(3500)
7 dim pegpos(121),w(6,4),m(6,4),j(52),v(15,7),i(52),d(52,4),y(6,5),c(4,4),d$(6),q(11,6),r(4,5),s(4),card(6):humcolor=20:compcolor=0
10 bload "cribscreen_dat",varptr(regsave%(0)):n=0
12 i%=0
13 rgb i%,regsave%(n),regsave%(n+1),regsave%(n+2)
14 n=n+3
15 i%=i%+1:if i%<32 then 13
17 pena 6:? at(5,5*8);"Please STANDBY while I set things up."
20 gosub 32000
50 dim sinewave%(11):restore 60:for cx%=0 to 11:read sinewave%(cx%):next cx%
60 data 100,90,60,100,90,60,-100,90,-60,-100,-90,-60
62 audio 15,1:wave 6,sinewave%
100 nl$="A23456789TJQK"
105 me=0:you=0
110 gosub 30000:gosub 32200
112 gosub 17000:msg$=" Use MOUSE for all player INPUT !":pena 18:gosub 7010:sleep(2*10^6)
113 gosub 12000
135 restore 10000
140 for n=1 to 15:for m=1 to 7:read v(n,m):next m:next n
150 for n=1 to 11:for m=1 to 6:read q(n,m):next m:next n
160 for n=1 to 4:for m=1 to 5:read r(n,m):next m:next n
170 n=1
172 read s(n)
175 n=n+1:if n<5 then 172
180 n=1
182 read d$(n)
185 n=n+1:if n<7 then 182
300 s1=0:s2=0
320 gosub 5660:gosub 5820:cut=1
350 if cut=1 then cut=0:goto 360
355 gosub 5660
360 gosub 6100
380 gosub 3400
400 i1=v(b9,5):i2=v(b9,6)
420 gosub 17000:msg$="YOUR DISCARDS? (CHOOSE 2 CARDS)":pena humcolor:gosub 7010
430 right=6:gosub 25000:i3=q1:i4=q2
525 y(i3,5)=0:y(i4,5)=0
530 gosub 23000:cnt=4:gosub 32600
535 cnt2=27:gosub 22000:cx=8:cy=119
537 n=1
540 if y(n,5)=0 then 550
542 num=y(n,4):suit=y(n,3):gosub 21000
545 cx=cx+35
550 n=n+1:if n<7 then 540
560 j=1
570 c(1,j)=m(i1,j):c(2,j)=m(i2,j):c(3,j)=y(i3,j):c(4,j)=y(i4,j)
572 j=j+1:if j<5 then 570
575 for k=1 to 3
576 for l=k+1 to 4
577 if c(k,4)>c(l,4) then 581
578 for i=1 to 4
579 swap c(k,i),c(l,i)
580 next i
581 next l:next k
630 gosub 4200
650 gosub 1490
670 gosub 24000
675 if m=0 then 710
680 gosub 17000:msg$="[ YOU SCORE FIRST ]":pena humcolor:gosub 7010:gosub 8010:x1=1:goto 930
710 gosub 17000:msg$="[ I SCORE FIRST ]":pena compcolor:gosub 7010:gosub 8010:x1=2:goto 1200
740 gosub 17000:msg$="- - the crib contains - -":pena 29:gosub 7010
745 gosub 22000:cx=8:cy=119:j=0
750 n=1
765 num=c(n,4):suit=c(n,3):gosub 21000
770 cx=cx+35
775 n=n+1:if n<5 then 765
780 q1=0:for i=1 to 4
790 for j=1 to 4
800 w(i,j)=c(i,j)
810 next j:next i
830 c=1:w(5,4)=t9
850 gosub 4420
860 on x1 goto 870,910
870 gosub 17000:pena 18:? at(2*8,175);"The crib has ";p;" points. ";
880 r=p:if r<>0 then gosub 9010
881 pena 29:? at(12*8,183);inverse (1) "PRESS":? at(18*8,183); "button to continue."
882 ask mouse x%,y%,b%:if b%<>4 then 882
900 goto 1370
910 x1=3
920 goto 1050
930 k=1
940 i=1
950 if i=i3 then 1000
960 if i=i4 then 1000
970 for j=1 to 4
980 w(k,j)=y(i,j)
990 next j
991 k=k+1
1000 i=i+1:if i<7 then 950
1010 q1=0:gosub 17000:msg$="..... YOUR CARDS .....":pena humcolor:gosub 7010
1011 cnt2=17:gosub 22000:cx=8:cy=119
1012 n=1
1013 if n=i3 or n=i4 then 1016
1014 num=y(n,4):suit=y(n,3):gosub 21000
1015 cx=cx+35
1016 n=n+1:if n<7 then 1013
1020 w(5,4)=t9:c=0
1040 gosub 4420
1050 if c=0 then gosub 17000:pena 18:msg$="How many points do you have?":gosub 7010
1055 if c=1 then gosub 17000:pena 18:msg$="How many points are in the crib?":gosub 7010
1060 gosub 27000
1070 d=p-p9
1080 if d>=0 then 1110
1090 gosub 17000:msg$="Not with that hand. TRY AGAIN !":pena 3:gosub 7010:gosub 8010
1100 goto 1050
1110 r=p9:if r<>0 then gosub 9040
1140 if d=0 then 1190
1150 gosub 17000:pena 25:? at(5*8,175);inverse(1) " MUGGINS ":? at(14*8,175);" for ";d;" points.";
1170 r=d:gosub 9010
1171 pena 29:? at(12*8,183);inverse(1) "PRESS":? at(18*8,183);"button to continue."
1172 ask mouse x%,y%,b%:if b%<>4 then 1172
1190 on x1 goto 1200,740,1370
1200 for k=1 to 4
1210 l=v(b9,k)
1220 for j=1 to 4
1230 w(k,j)=m(l,j)
1240 next j:next k
1260 for k=1 to 4:l=w(k,1):next k
1280 gosub 17000:msg$="..... MY CARDS .....":pena compcolor:gosub 7010
1281 cnt2=17:gosub 22000:cx=8:cy=119
1282 n=1
1284 num=w(n,4):suit=w(n,3):gosub 21000
1285 cx=cx+35
1286 n=n+1:if n<5 then 1284
1290 w(5,4)=t9:c=0:gosub 4390
1320 gosub 17000:pena compcolor:? at(5*8,175);"I have ";p;" points.";
1340 r=p:if r<>0 then gosub 9010
1341 pena 29:? at(12*8,183);inverse(1) "PRESS":? at(18*8,183);"button to continue."
1342 ask mouse x%,y%,b%:if b%<>4 then 1342
1360 on x1 goto 740,930
1370 gosub 6390
1380 gosub 22000:for i=100 to 116:draw(50,i to 134,i),0:next i:cxx=9:cyy=63:gosub 32700:goto 350
1400 gosub 17000
1410 gshape(46,63),winner%():pena compcolor:? at(92,81);"I WIN THIS GAME":goto 1460
1430 gosub 17000
1440 gshape(46,63),winner%():pena 19:? at(84,81);"YOU WIN THIS GAME"
1445 cx=1
1446 cy=5000
1447 n=sound(1,1,50,65,cy):n=sound(2,1,50,65,cy)
1448 sleep (10000)
1449 cy=cy-300:if cy>=100 then 1447
1450 cx=cx+1:if cx<=4 then 1446
1460 gosub 1470
1462 ask mouse x%,y%,b%:n=pixel(x%,y%)
1463 if b%=4 and (n=8 or n=19) then 1480
1467 sleep(30000):goto 1462
1470 pena 29
1471 ? at(7*8,175);inverse(1) "===== RUNNING TOTAL =====";inverse(0) " "
1472 ? at(2*8,183);inverse(1) "COMPUTER";inverse(0) " =";me;"GAMES ";inverse(1) "YOU";inverse(0) " =";you;"GAMES"
1473 gosub 12000:return
1480 if n=19 then scnclr:end
1482 gosub 32200:gosub 12000:goto 300
1490 y5=0:m5=0:c=0:s9=0:g=0:right=5
1500 if m=0 then 1910
1510 if y5<>4 then 1540
1520 if m5=4 then 2470
1530 goto 1910
1540 gosub 17000:pena humcolor:msg$="Your play. Select a card.":gosub 7010
1550 gosub 25000:gosub 17000
1560 if c$<>"GO" then 1680
1570 x=31-s9
1575 n=1
1578 if y(n,5)=0 then 1590
1580 if y(n,4)<=x then 1600
1590 n=n+1:if n<7 then 1578
1595 goto 1910
1600 gosub 17000:msg$="SHAME ! SHAME ! You have a play !!!":pena 3:gosub 7010:gosub 8010:goto 1540
1680 c6=val(c$):if s9+y(c6,2)>31 then 1890
1690 s9=s9+y(c6,2):y5=y5+1:i(10+y5)=c6:c=c+1:right=right-1:j(c)=y(c6,4):mg$="You ":cx=humcolor:gosub 2960:gosub 6390
1700 if x31=1 then msg$="You get 2 points for 31":pena humcolor:gosub 7010
1750 y(c6,5)=0:cnt2=17:gosub 22000
1752 if y5=1 or cx1=164 then cx1=164:cy1=108:cx=cx1:cy=cy1:num=y(c6,4):suit=y(c6,3):gosub 21000:cx1=cx1+20:goto 1754
1753 zz=0:cx=cx1:cy=cy1:num=y(c6,4):suit=y(c6,3):gosub 21100:cx1=cx1+20
1754 r=p:if r<>0 then gosub 9040
1755 cx=8:cy=119:for n=1 to 6
1756 if y(n,5)=0 then 1759
1757 num=y(n,4):suit=y(n,3):gosub 21000
1758 cx=cx+35
1759 next n
1780 f=1
1820 if s9<>31 then 1910
1830 gosub 24000:cx1=164:cx2=164:f=0:c=0:s9=0:g=0:gosub 6390:goto 1910
1890 gosub 17000:msg$="That totals more than 31, TRY AGAIN!":pena 3:gosub 7010
1900 gosub 8010:goto 1540
1910 if m5<>4 then 2050
1920 if y5=4 then 2470
1930 if c$<>"GO" then 1510
1935 cx1=164:cx2=164
1940 if f=2 then 2000
1950 gosub 17000:pena humcolor:msg$="You get 1 point for last card.":gosub 7010
1960 r=1:gosub 9040:gosub 24000
1980 f=0:c=0:s9=0:gosub 6390
1990 goto 1510
2000 gosub 17000:pena compcolor:msg$="I get 1 point for last card.":gosub 7010
2010 r=1:gosub 9010:gosub 24000
2030 f=0:c=0:s9=0:gosub 6390
2040 goto 1510
2050 k9=0:p9=0:c9=c:c=c+1:h9=s9
2090 for i9=1 to 6
2100 i(i9)=0
2110 if i9=i1 then 2250
2120 if i9=i2 then 2250
2130 if m5=0 then 2170
2140 for j9=1 to m5
2150 if i9=i(20+j9) then n=1:j9=m5
2160 next j9:if n=1 then n=0:goto 2250
2170 if h9+m(i9,2)>31 then 2250
2180 k9=k9+1:s9=h9+m(i9,2):j(c)=m(i9,4):mg$="no":pena compcolor:gosub 2960
2220 if p>p9 then p9=p
2230 i(i9)=p:i(k9+30)=i9
2250 next i9
2260 c=c9:s9=h9
2280 if k9<>0 then 2570
2290 if c$<>"GO" then 2360
2300 if g=1 then 2370
2310 gosub 17000:pena compcolor:msg$="I get 1 point for last card.":gosub 7010
2320 c=0:s9=0:r=1:gosub 9010:gosub 24000:gosub 6390:cx1=164:cx2=164
2350 goto 1510
2360 if y5<>4 then 2430
2370 gosub 17000:pena humcolor:msg$="I'll give you 1 point for last card.":gosub 7010
2380 r=1:gosub 9040:gosub 24000:cx1=164:cx2=164
2400 c=0:s9=0:g=0:gosub 6390:c$="":goto 1910
2430 if g=1 then 1510
2440 gosub 17000:msg$="GO":pena 29:gosub 7010:g=1
2460 gosub 8010:goto 1510
2470 if f=0 then 2560
2475 cx1=164:cx2=164
2480 if f=1 then 2530
2490 gosub 17000:pena compcolor:msg$="I get 1 point for last card.":gosub 7010
2500 r=1:gosub 9010:gosub 24000:s9=0:gosub 6390
2520 goto 2560
2530 gosub 17000:pena humcolor:msg$="You get 1 point for last card.":gosub 7010
2540 r=1:gosub 9040:gosub 24000:s9=0:gosub 6390
2560 return
2570 c=c+1:m5=m5+1
2590 if c<>1 then 2740
2600 j7=1
2610 i9=v(b9,j7)
2620 vv=1
2630 if i(vv+20)=i9 then 2710
2635 vv=vv+1:if vv<=m5+1 then 2630
2650 if m(i9,2)=5 then 2710
2660 i(m5+20)=i9:j(c)=m(i9,4):p9=0:s9=m(i9,2):goto 2810
2710 j7=j7+1:if j7<5 then 2610
2720 l=v(b9,1)
2730 goto 2660
2740 j8=1
2750 i9=i(j8+30)
2760 if i(i9)=p9 then 2780
2770 j8=j8+1:if j8<=k9 then 2750
2780 i(m5+20)=i9:j(c)=m(i9,4):s9=s9+m(i9,2)
2810 gosub 17000:msg$="MY PLAY":pena compcolor:gosub 7010:gosub 8010
2820 gosub 23000:cnt=cnt-1:gosub 32600
2822 if m5=1 or cx2=164 then cx2=164:cy2=63:cx=cx2:cy=cy2:num=m(i9,4):suit=m(i9,3):gosub 21000:cx2=cx2+20:goto 2840
2823 cx=cx2:cy=cy2:num=m(i9,4):suit=m(i9,3):gosub 21100:cx2=cx2+20
2840 f=2:gosub 6390:gosub 17000:mg$="I ":cx=compcolor:gosub 2960:r=p
2850 if s9=31 then gosub 17000:msg$="I get 2 points for 31 !":pena compcolor:gosub 7010
2860 if r<>0 then gosub 9010
2870 if s9<>31 then 2900
2880 gosub 24000:cx1=164:cx2=164:f=0:c=0:s9=0:gosub 6390:goto 1510
2900 if c$="GO" then 1910
2910 goto 1510
2960 p=0:x31=0
2970 if c=1 then 3200
2980 if s9<>15 then 3010
2990 p=p+2:if mg$<>"no" then msg$=mg$+"get 2 points for FIFTEEN.":gosub 17000:pena cx:gosub 7010:gosub 8010
3000 goto 3030
3010 if s9<>31 then 3030
3020 p=p+2:x31=1
3030 if c-2>2 then n=c-2:goto 3040
3035 n=2
3040 j=0:for i=c to n step -1
3050 if j(i)<>j(i-1) then if mg$<>"no" then 3125 else goto 3140
3060 on c-i+1 goto 3070,3090,3110
3070 p=p+2:j=1
3080 goto 3120
3090 p=p+4:j=2
3100 goto 3120
3110 p=p+6:j=3
3120 next i
3122 if mg$="no" then 3140
3125 if j=1 then msg$=mg$+"get 2 points for a PAIR."
3130 if j=2 then msg$=mg$+"get 6 points for THREE of a KIND."
3135 if j=3 then msg$=mg$+"get 12 points for FOUR of a KIND."
3137 if j<>0 then gosub 17000:pena cx:gosub 7010:gosub 8010
3140 if c=2 then 3200
3150 r9=0
3160 i=3
3162 gosub 3210
3164 i=i+1:if i<=c then 3162
3190 p=p+r9
3195 if r9<>0 then if mg$<>"no" then msg$=mg$+"get "+str$(r9)+" points for a "+str$(r9)+" card RUN.":gosub 17000:pena cx:gosub 7010
3200 return
3210 j=11
3212 j(j)=14
3214 j=j+1:if j<=20 then 3212
3220 j=1
3222 j(j+10)=j(c-j+1)
3224 j=j+1:if j<=c then 3222
3240 k=1
3250 l=k+1
3260 if j(k+10)<j(l+10) then 3300
3270 x=j(k+10):j(k+10)=j(l+10):j(l+10)=x
3300 l=l+1:if l<=i then 3260
3310 k=k+1:if k<=i-1 then 3250
3320 k=1
3330 if j(k+10)<>j(k+11)-1 then 3360
3340 k=k+1:if k<=i-1 then 3330
3350 r9=i
3360 return
3400 p9=0
3410 n=1:z9=1
3420 i1=v(z9,1):i2=v(z9,2):i3=v(z9,3):i4=v(z9,4)
3430 gosub 13000
3460 q1=0:j=1
3470 w(1,j)=m(i1,j)
3480 w(2,j)=m(i2,j)
3490 w(3,j)=m(i3,j)
3500 w(4,j)=m(i4,j)
3510 w(5,j)=25
3520 j=j+1:if j<5 then 3470
3540 c=0
3550 gosub 4390
3560 v(z9,7)=p
3570 if p>p9 then p9=p
3580 z9=z9+1:if z9<16 then 3420
3600 j=0
3610 i=1
3620 if v(i,7)<>p9 then 3650
3630 j=j+1:i(j)=i
3650 i=i+1:if i<16 then 3620
3660 if j>1 then 3720
3680 b9=i(1)
3690 gosub 14000:return
3720 c9=5:z=1:goto 3960
3760 n=1:c9=8:z=2:goto 3960
3800 c9=7:z=3:goto 3960
3840 c9=11:z=4:goto 3960
3880 c9=1:z=5:goto 3960
3920 b9=int(j*rnd)+1
3930 b9=i(b9):gosub 14000:return
3960 p9=0
3965 gosub 13000
3970 i=1
3972 j(i)=0
3974 i=i+1:if i<16 then 3972
4000 i=1
4010 k=1
4020 l=v(i(i),k)
4030 if m(l,4)<>c9 goto 4050
4040 j(i)=j(i)+1
4050 k=k+1:if k<5 then 4020
4060 if j(i)>p9 then p9=j(i)
4070 i=i+1:if i<=j then 4010
4080 k=0
4090 i=1
4100 if j(i)<>p9 then 4130
4110 k=k+1:b9=i(i)
4130 i=i+1:if i<=j then 4100
4140 if k<>1 then 4160
4150 gosub 14000:return
4160 on z goto 3760,3800,3840,3880,3920
4200 n=int(rnd*38)+14
4210 gosub 17000:msg$="THE UPCARD IS....":pena 29:gosub 7010
4220 cx=9:cy=63:num=d(n,4):suit=d(n,3):gosub 21000:q1=0:gosub 8010
4240 i=1
4242 w(5,i)=d(n,i)
4244 i=i+1:if i<5 then 4242
4270 t9=w(5,4)
4280 if w(5,4)<>11 then 4370
4290 if m=0 then 4340
4300 gosub 17000:msg$="TWO POINTS TO ME.":pena compcolor:gosub 7010
4310 r=2:gosub 9010
4330 return
4340 gosub 17000:msg$="TWO POINTS TO YOU.":pena humcolor:gosub 7010
4350 r=2:gosub 9040
4370 return
4390 rem
4420 p=0
4430 rem
4440 i=1
4450 if w(i,4)<>11 goto 4490
4460 if w(i,3)<>w(5,3) goto 4490
4470 p=p+1
4480 goto 4500
4490 i=i+1:if i<5 then 4450
4500 rem
4510 i=1
4520 if w(i,3)<>w(i+1,3) goto 4620
4530 i=i+1:if i<4 then 4520
4540 rem
4550 if c<>0 goto 4600
4560 p=p+4
4570 if w(4,3)<>w(5,3) goto 4620
4580 p=p+1
4590 goto 4620
4600 if w(4,3)<>w(5,3) goto 4620
4610 p=p+5
4620 rem
4630 i=1
4640 j=i+1
4650 if w(i,2)+w(j,2)<>15 goto 4670
4660 p=p+2
4670 j=j+1:if j<6 then 4650
4680 i=i+1:if i<5 then 4640
4690 rem
4700 i=1
4710 j=i+1
4720 k=j+1
4730 if w(i,2)+w(j,2)+w(k,2)<>15 goto 4750
4740 p=p+2
4750 k=k+1:if k<6 then 4730
4760 j=j+1:if j<5 then 4720
4770 i=i+1:if i<4 then 4710
4780 rem
4790 i=1
4800 j=i+1
4810 k=j+1
4820 l=k+1
4830 if (w(i,2)+w(j,2)+w(k,2)+w(l,2))<>15 goto 4850
4840 p=p+2
4850 l=l+1:if l<6 then 4830
4860 k=k+1:if k<5 then 4820
4870 j=j+1:if j<4 then 4810
4880 i=i+1:if i<3 then 4800
4890 rem
4900 s=0
4910 i=1
4920 s=s+w(i,2)
4930 i=i+1:if i<6 then 4920
4940 if s<>15 goto 4960
4950 p=p+2
4960 rem
4970 i=1
4980 j(i)=0
4990 i=i+1:if i<14 then 4980
5000 i=1
5010 j=w(i,4)
5020 j(j)=j(j)+1
5030 i=i+1:if i<6 then 5010
5040 i=1
5050 on j(i)+1 goto 5090,5090,5080,5070,5060
5060 p=p+6
5070 p=p+4
5080 p=p+2
5090 i=i+1:if i<14 then 5050
5100 rem
5110 for i=1 to 5
5120 for j=i to 5
5130 if w(i,4)<=w(j,4) goto 5150
5140 swap w(i,4),w(j,4)
5150 next j
5160 next i
5170 rem
5180 d=w(1,4)-q(1,1)
5190 i=1
5200 j=1
5210 q(i,j)=q(i,j)+d
5220 j=j+1:if j<6 then 5210
5230 i=i+1:if i<12 then 5200
5240 i=1
5250 j=1
5260 if w(j,4)<>q(i,j) goto 5310
5270 j=j+1:if j<6 then 5260
5280 rem
5290 p=p+q(i,6)
5300 return
5310 i=i+1:if i<12 then 5250
5320 rem
5330 l=1
5340 d=w(l,4)-r(1,1)
5350 i=1
5360 j=1
5370 r(i,j)=r(i,j)+d
5380 j=j+1:if j<5 then 5370
5390 i=i+1:if i<5 then 5360
5400 i=1
5410 k=1
5420 if w(k+l-1,4)<>r(i,k) goto 5470
5430 k=k+1:if k<5 then 5420
5440 rem
5450 p=p+r(i,5)
5460 return
5470 i=i+1:if i<5 then 5410
5480 l=l+1:if l<3 then 5340
5490 rem
5500 l=1
5510 d=w(l,4)-s(1)
5520 i=1
5530 s(i)=s(i)+d
5540 i=i+1:if i<4 then 5530
5550 i=1
5560 if w(l+i-1,4)<>s(i) goto 5610
5570 i=i+1:if i<4 then 5560
5580 rem
5590 p=p+s(4)
5600 return
5610 l=l+1:if l<4 then 5510
5620 return
5660 gosub 17000:msg$="SHUFFLING":pena 25:gosub 7010
5665 randomize -1
5670 for j=0 to 51:i(j)=j:next j
5690 for j=51 to 1 step -1
5700 k=int(rnd*(j+1))
5710 swap i(j),i(k)
5720 next j
5730 i=1
5740 j=i(i-1)+1
5750 d(i,1)=j
5755 d(i,3)=int((j-1)/13)+1
5760 d(i,4)=j-13*int((j-1)/13)
5765 if d(i,4)<10 then d(i,2)=d(i,4):goto 5775
5770 d(i,2)=10
5775 i=i+1:if i<53 then 5740
5780 return
5820 gosub 17000:msg$="Press BUTTON to cut for deal.":pena 18:gosub 7010
5830 ask mouse x%,y%,b%:if b%<>4 then 5830
5880 randomize -1:i=int(rnd*52)+1
5890 gosub 17000:msg$="YOUR card is ........":pena humcolor:gosub 7010
5900 cx=43:cy=119:num=d(i,4):suit=d(i,3):gosub 21000:gosub 8010
5910 randomize -1:j=int(rnd*52)+1
5920 if j=i then 5910
5930 gosub 17000:msg$="MY card is ..........":pena compcolor:gosub 7010
5940 cx=113:cy=119:num=d(j,4):suit=d(j,3):gosub 21000:gosub 8010
5950 if d(i,4)<d(j,4) then m=1:gosub 17000:msg$="YOUR CRIB......":pena humcolor:gosub 7010:gosub 8010:goto 6000
5960 if d(j,4)<d(i,4) then m=0:gosub 17000:msg$="MY CRIB........":pena 0:gosub 7010:gosub 8010:goto 6000
5970 gosub 17000:msg$="please cut again":pena 29:gosub 7010:gosub 8010:cnt2=19:gosub 22000:goto 5820
6000 cnt2=19:gosub 22000:return
6100 r=0:s9=0:gosub 6390
6110 if m=0 then gshape(50,100),mycrib%():goto 6120
6115 gshape(50,100),yourcrib%()
6120 m=1-m:y=1-m
6150 gosub 17000:msg$=" - - YOUR CARDS ARE - -":pena humcolor:gosub 7010
6160 cx=8:cy=119:cxx=269:cyy=63
6170 n=1
6180 k=2*n-y:l=2*n-m
6200 i=1
6240 m(n,i)=d(k,i):y(n,i)=d(l,i):y(n,5)=1
6250 i=i+1:if i<5 then 6240
6255 n=n+1:if n<7 then 6180
6265 k=1
6266 l=k+1
6267 if y(k,4)>y(l,4) then 6271
6268 i=1
6269 x=y(k,i):y(k,i)=y(l,i):y(l,i)=x
6270 i=i+1:if i<5 then 6269
6271 l=l+1:if l<7 then 6267
6273 k=k+1:if k<6 then 6266
6275 cnt=1
6284 for n=1 to 6:if m=1 then if cnt=1 then gosub 32605 else gosub 32625
6285 num=y(n,4):suit=y(n,3):gosub 21000:cx=cx+35:if m=0 then if cnt=1 then gosub 32605 else gosub 32625
6286 cnt=2:next n
6288 gosub 17000:pena 25:? at(8*2,175);inverse(1) "=STUDY YOUR HAND=":? at(20*8,175);" while I'm gone":cnt=6
6289 return
6390 drawmode 1:pena 6:penb 7:locate(84,83):print using "##";s9:drawmode 0
6395 return
7010 msg=int(len(msg$)/2)
7015 print at(8*(19-msg),175);msg$
7030 return
8010 sleep(1.5*10^6)
8030 return
9010 mpeg=3-mpeg:q1=0:q2=s1
9011 if mpeg=1 and q4<>0 then gshape(mp1x,mp1y),computerb%()
9012 if mpeg=1 then mp1x=mp2x:mp1y=mp2y
9013 if mpeg=2 then gshape(mp2x,mp2y),computerb%():mp2x=mp1x:mp2y=mp1y
9014 for peg=s1+1 to s1+r
9015 on mpeg gosub 9020,9025:pena 8:penb 21:drawmode 1:locate (37,33):print using "###";peg:drawmode 0
9016 x%=sound(1,1,2,60,7000):x%=sound(2,1,2,60,7000):sleep(200000)
9019 next peg:s1=s1+r:q4=1:gosub 8010:return
9020 xx=mp1x:yy=mp1y:gosub 9030:mp1x=xx+pegpos(peg):mp1y=yy:return
9025 xx=mp2x:yy=mp2y:gosub 9030:mp2x=xx+pegpos(peg):mp2y=yy:return
9030 if peg=121 then gshape(xx,yy),computerb%():gshape(11,yy),computer%():me=me+1:goto 1400
9032 if peg=31 or peg=91 then yy=yy+8:if q2<>30 and q2<>90 then gshape(xx,yy-8),computerb%()
9033 if peg=61 then yy=yy-8:if q2<>60 then gshape(xx,yy+8),computerb%()
9034 if q1<>0 then gshape(xx,yy),computerb%()
9035 q1=1:gshape(xx+pegpos(peg),yy),computer%():return
9040 ypeg=3-ypeg:q1=0:q2=s2
9041 if ypeg=1 and q5<>0 then gshape(yp1x,yp1y),humanb%()
9042 if ypeg=1 then yp1x=yp2x:yp1y=yp2y
9043 if ypeg=2 then gshape(yp2x,yp2y),humanb%():yp2x=yp1x:yp2y=yp1y
9044 for peg=s2+1 to s2+r
9045 on ypeg gosub 9050,9055:pena 19:penb 21:drawmode 1:locate (255,33):print using "###";peg:drawmode 0
9046 x%=sound(1,1,2,60,2000):x%=sound(2,1,2,60,2000):sleep(200000)
9049 next peg:s2=s2+r:q5=1:gosub 8010:return
9050 xx=yp1x:yy=yp1y:gosub 9060:yp1x=xx+pegpos(peg):yp1y=yy:return
9055 xx=yp2x:yy=yp2y:gosub 9060:yp2x=xx+pegpos(peg):yp2y=yy:return
9060 if peg=121 then gshape(xx,yy),humanb%():gshape(11,yy),human%():you=you+1:goto 1430
9062 if peg=31 or peg=91 then yy=yy-8:if q2<>30 and q2<>90 then gshape(xx,yy+8),humanb%()
9063 if peg=61 then yy=yy+8:if q2<>60 then gshape(xx,yy-8),humanb%()
9064 if q1<>0 then gshape(xx,yy),humanb%()
9065 q1=1:gshape(xx+pegpos(peg),yy),human%():return
10000 data 1,2,3,4,5,6,0,1,2,3,5,4,6,0,1,2,3,6,4,5,0
10002 data 1,2,4,5,3,6,0,1,2,4,6,3,5,0,1,2,5,6,3,4,0
10004 data 1,3,4,5,2,6,0,1,3,4,6,2,5,0,1,3,5,6,2,4,0
10006 data 1,4,5,6,2,3,0,2,3,4,5,1,6,0,2,3,4,6,1,5,0
10008 data 2,3,5,6,1,4,0,2,4,5,6,1,3,0,3,4,5,6,1,2,0
10010 data 1,1,1,2,3,09,1,1,2,2,3,12,1,1,2,3,3,12
10012 data 1,1,2,3,4,08,1,2,2,2,3,09,1,2,2,3,3,12
10014 data 1,2,2,3,4,08,1,2,3,3,3,09,1,2,3,3,4,08
10016 data 1,2,3,4,4,08,1,2,3,4,5,05
10018 data 1,1,2,3,6,1,2,2,3,6,1,2,3,3,6,1,2,3,4,4
10020 data 1,2,3,3
10022 data 1,2,3,4,5,6
11000 rem
12000 mpeg=2:ypeg=2:mp1x=11:mp1y=9:mp2x=11:mp2y=9:yp1x=11:yp1y=45:yp2x=11:yp2y=45:q4=0:q5=0:return
13000 rgb 22,regsave%(n*3),regsave%(n*3+1),regsave%(n*3+2)
13010 n=n+2
13020 return
14000 rgb 22,regsave%(66),regsave%(67),regsave%(68)
14010 return
17000 drawmode 0:peno 19:pena 12:paint(2,184),0
17010 return
21000 for q=0 to 64 step 16:qq=sound(1,1,2,q,5000):qq=sound(2,1,2,q,4000):next q
21010 on suit gosub 21050,21060,21070,21080
21020 pena 18:? at(cx+4,cy+8);mid$(nl$,num,1):? at(cx+23,cy+38);mid$(nl$,num,1)
21040 return
21050 gshape(cx,cy),spades%():return
21060 gshape(cx,cy),clubs%():return
21070 gshape(cx,cy),hearts%():return
21080 gshape(cx,cy),diamonds%():return
21100 for q=0 to 64 step 16:qq=sound(1,1,2,q,5000):qq=sound(2,1,2,q,4000):next q
21110 on suit gosub 21150,21160,21170,21180
21120 pena 18:? at(cx+4,cy+8);mid$(nl$,num,1):? at(cx+23,cy+38);mid$(nl$,num,1)
21140 return
21150 gshape(cx,cy),spades2%():return
21160 gshape(cx,cy),clubs2%():return
21170 gshape(cx,cy),hearts2%():return
21180 gshape(cx,cy),diamonds2%():return
22000 for n=cnt2+1 to 1 step -1:gshape(n*8,119),carderase%():next n
22030 return
23000 for n=13 to 1 step -1:gshape(269,62+((n-1)*8)),backerase%():next n
23030 return
24000 for n=32 to 20 step -1:gshape(n*8,108),carderase%():next n
24020 for n=32 to 20 step -1:gshape(n*8,63),carderase%():next n
24030 return
25000 num=1:for n=1 to 6
25002 if y(n,5)=1 then card(num)=n:num=num+1
25004 next n
25005 if right<6 then gshape(8+(right*35),154),gobox%()
25007 gosub 26100:q1=0:q2=0
25010 ask mouse x%,y%,b%
25015 if b%=4 and right=6 then 25045
25020 if b%=4 and right<6 then 26000
25030 goto 25010
25045 if y%<119 or y%>160 then 25010
25050 i=1
25055 if x%>8+((i-1)*35) and x%<8+(((i-1)*35)+33) then 25070
25060 i=i+1:if i<=right then 25055
25065 goto 25010
25070 gshape(15+((i-1)*35),161),pointer%():gosub 26100
25075 if q1=0 then q1=card(i):goto 25010
25080 q2=card(i):if q1=q2 then q2=0:goto 25010
25085 return
26000 if y%>153 and y%<165 and x%>8+(right*35) and x%<8+((right*35)+22) then c$="GO":return
26010 if y%<119 or y%>160 then 25010
26020 i=1
26030 if x%>8+((i-1)*35) and x%<8+(((i-1)*35)+33) then 26060
26040 i=i+1:if i<=right-1 then 26030
26050 goto 25010
26060 c$=str$(card(i))
26070 gshape(8+(right*35),154),goboxb%():return
26100 rem sound
26150 return
27000 gshape(115,63),updown%():gshape(146,75),donebox%():drawmode 1:pena 6:penb 7:p9=0:n=0
27010 ask mouse x%,y%,b%:st=pixel(x%,y%)
27015 if b%=4 and x%>146 and x%<184 and y%>75 and y%<85 then n=1
27020 if n=1 then print at(84,83);" 0":drawmode 0:gshape(115,63),updownb%():gshape(146,75),doneboxb%():return
27022 if b%=0 goto 27010
27025 if st<>8 and st<>3 then 27010
27030 if st=8 then 27050
27035 if st=3 then 27060
27040 goto 27010
27050 p9=p9+1:if p9>29 then p9=0
27055 locate(84,83):print using "##";p9;
27058 sleep(.2*10^6):goto 27010
27060 p9=p9-1:if p9<0 then p9=29
27065 locate(84,83):print using "##";p9;
27068 sleep(.2*10^6):goto 27010
30000 restore 30080
30010 i=1
30012 read pegpos(i)
30014 i=i+1:if i<61 then 30012
30020 restore 30080
30030 i=61
30032 read pegpos(i)
30034 i=i+1:if i<121 then 30032
30040 pegpos(61)=0:return
30080 data 15,8,8,8,8,13,8,8,8,8,13,8,8,8,8,13,8,8,8,8,13,8,8,8,8,13,8,8,8,8,0,-8,-8,-8,-8,-13,-8,-8,-8,-8
30081 data -13,-8,-8,-8,-8,-13,-8,-8,-8,-8,-13,-8,-8,-8,-8,-13,-8,-8,-8,-8
32000 bload "clubs1",varptr(clubs%(0)):bload "spades1",varptr(spades%(0)):bload "hearts1",varptr(hearts%(0)):bload "cribscreen",varptr(cribscreen%(0))
32004 bload "back1",varptr(back1%(0)):bload "back2",varptr(back2%(0)):bload "player1",varptr(computer%(0)):bload "player2",varptr(human%(0))
32008 bload "blankplay1",varptr(computerb%(0)):bload "blankplay2",varptr(humanb%(0)):bload "mycrib",varptr(mycrib%(0))
32011 bload "yourcrib",varptr(yourcrib%(0)):bload "points",varptr(points%(0)):bload "pointer",varptr(pointer%(0))
32015 bload "updown",varptr(updown%(0)):bload "blankud",varptr(updownb%(0)):bload "gobox",varptr(gobox%(0)):bload "donebox",varptr(donebox%(0))
32019 bload "winner",varptr(winner%(0)):sshape(269,155;303,163),backerase%():sshape(219,119;227,165),carderase%():sshape(100,0;123,11),goboxb%()
32023 sshape(225,154;264,165),doneboxb%():bload "diamonds1",varptr(diamonds%(0)):bload "clubs2",varptr(clubs2%(0)):bload "spades2",varptr(spades2%(0))
32027 bload"hearts2",varptr(hearts2%(0)):bload "diamonds2",varptr(diamonds2%(0)):return
32200 gshape(0,0),cribscreen%():gshape(11,9),computer%():gshape(11,45),human%()
32210 return
32600 cxx=269:cyy=63:rem **** draw back of card ****
32605 if cnt=0 then return
32620 gosub 32700:if cnt=1 then return
32625 for q1=1 to cnt-1:cyy=cyy+11:gosub 32710:next q1:return
32700 gshape(cxx,cyy),back1%():return
32710 gshape(cxx,cyy),back2%():return
32720 rem
32721 cxx=9:cyy=63:gosub 32700
32730 pena 7:peno 29:paint(80,72),0
32740 return